scrolledwindow: Don't check drag threshold when already scrolling
authorAlexander Mikhaylenko <alexm@gnome.org>
Wed, 7 Jul 2021 14:39:06 +0000 (19:39 +0500)
committerAlexander Mikhaylenko <alexm@gnome.org>
Wed, 7 Jul 2021 14:39:06 +0000 (19:39 +0500)
Checkout the drag threshold only makes sense when starting a scroll, after
that it just adds jumps when trying to scroll back and forth.

gtk/gtkscrolledwindow.c

index 058cff79216390390e374dfe0dc93a81dfc1368d..2df696234c071f710dfdd47eafab322320ed55c4 100644 (file)
@@ -987,11 +987,15 @@ scrolled_window_drag_update_cb (GtkScrolledWindow *scrolled_window,
                                 GtkGesture        *gesture)
 {
   GtkScrolledWindowPrivate *priv = gtk_scrolled_window_get_instance_private (scrolled_window);
+  GdkEventSequence *sequence;
   GtkAdjustment *hadjustment;
   GtkAdjustment *vadjustment;
   double dx, dy;
 
-  if (!gtk_drag_check_threshold_double (GTK_WIDGET (scrolled_window),
+  sequence = gtk_gesture_single_get_current_sequence (GTK_GESTURE_SINGLE (gesture));
+
+  if (gtk_gesture_get_sequence_state (gesture, sequence) != GTK_EVENT_SEQUENCE_CLAIMED &&
+      !gtk_drag_check_threshold_double (GTK_WIDGET (scrolled_window),
                                         0, 0, offset_x, offset_y))
     return;